Autoassociation with a CNN


Problem 1
Repeat the problem in Autoassociation > Rose to remove the noise from a shape. Create a new project, select Convolutional Neural Network, General Purpose and Simulated Annealing in the new project dialog. Also check the options to generate the files BuildTrainSet.lab and BuildValidSet.lab. The project name must be ConvRose.
Repita el problema en Autoassociation > Rose para remover el ruido de una silueta. Cree un nuevo proyecto, seleccione Convolutional Neural Network, General Purpose y Simulated Annealing en el diálogo de nuevo proyecto. También seleccione las opciones para generar los archivos BuildTrainSet.lab y BuildValidSet.lab. El nombre del proyecto debe ser ConvRose.

AutoAssociation

Step A
Edit the BuildTrainSet.lab file to build an appropriate training set for learning of the rose r = cos(3θ) using a CNN for auto-association. Use 2000 training cases and 64 inputs. The input training set must include noisy roses and the target must include clean roses as shown in the previous figure. The training set must include the same phase in eight different training cases.
Edite el archivo BuildTrainSet.lab para construir un conjunto de datos para aprender la rosa r = cos(3θ) usando una CNN para auto-asociación. Use 2000 casos de entrenamiento y 64 entradas. La entrada del conjunto de datos de entrenamiento debe incluir rosas con ruido y la meta debe incluir rosas sin ruido como se muestra en la figura anterior. El conjunto de datos de entrenamiento debe incluir la misma fase en ocho diferentes casos de entrenamiento.

ConvRose\BuildTrainSet.lab
int numCases = 2000;
int numInputs = 64;
double deltaInput = (2.0*3.1416)/numInputs;
double delta = (2.0*3.1416)/(numCases-1);
int i;
int j;
double phase = 0.0;
//_______________________________________ 1. Training Set Target
Matrix trainSetTarget ;
trainSetTarget .Create(numCases, numInputs);
for(i=0; i<numCases; i++)
{
     phase = i*delta;
     for (j=0; j<numInputs; j++)
     {
          trainSetTarget [i][j] = (sin(3*j*deltaInput + phase));
     }
}
trainSetTarget .Save();
//_______________________________________ 2. Training Set Input
Matrix noise;
noise.CreateRandom(numCases, numInputs, -1.0, 1.0);
Matrix trainSetInput= 0.9*trainSetTarget + 0.1*noise;
trainSetInput.Save();

trainSetInput0

trainSetInput440

trainSetInput500

Step B
Edit the BuildValidSet.lab file, then execute the code. Contaminate the target training set with 10% of noise to create the input validation set. The target of the validation set is the same as the target of the training set.
Edite el archivo BuildValidSet.lab, entonces ejecute el código. Contamine la salida deseada (meta) de el conjunto de entrenamiento con 10% de ruido para crear la entrada el conjunto de datos de validación. La salida deseada (meta) del conjunto de datos de validación es la misma que la salida deseada (meta) del conjunto de datos de entrenamiento.

ConvRose\BuildValidSet.lab
//_______________________________________ 1. Load the training set
Matrix trainSetTarget;
trainSetTarget.Load();

int numRows = trainSetTarget.GetRowCount();
int numCols= trainSetTarget.GetColCount();

Matrix noise;
noise.CreateRandom(numRows, numCols, -1.0, 1.0);
//_______________________________________ 2. Validation Set Input
Matrix validSetInput = 0.9*trainSetTarget + 0.1*noise;
validSetInput.Save();

validSetInput

Step C
Edit the Train.lab file, then execute the code. Train the CNN using Simulated Annealing and the Conjugate Gradient method.
Edite el archivo Train.lab, entonces ejecute el código. Entrene la CNN usando Simulated Annealing, y entonces, use el método del Gradiente Conjugado.

ConvRose\Train.lab
//_______________________________________ 1. Network setup
ConvNet net;
net.Create(1, 1, 64, 2);
//_______________________________________ 2. Scaling
net.SetInRange(-1.0, 1.0);
net.SetOutRange(-1.0, 1.0);
//_______________________________________ 3. Layer setup
net.SetFullLayer(0, 2, 14); // tanh=2, 14 neurons
net.SetFullLayer(1, 2, 64); // tanh=2, 14 neurons
//_______________________________________ 4. Load and set the training set
Tensor trainSetInput;
trainSetInput.LoadCsv(64, 1, 1);
Tensor trainSetTarget;
trainSetTarget.LoadCsv(64, 1, 1);
net.SetTrainSet(trainSetInput, trainSetTarget, false);
//_______________________________________ 5. Train using simulated annealing
net.TrainSimAnneal(
     10, //Number of Temperatures
     10, //Number Iterations
     15, //Initial Temperature
     0.001, //Final Temperature
     true, //Is Cooling Schedule Linear?
     4, //Number of Cycles
     1.0e-6, //Goal (desired mse)
     true //Use Singular Value Decomposition
);
//_______________________________________ 6. Train using conjugate gradient
net.TrainConjGrad(1000,1.0e-10);
//_______________________________________ 7. Save the trained network
net.Save();

Step D
Edit the CheckTrain.lab file, then execute the code to check the training. (a) Compute the mean squared error for the CNN using the training set. (b) Plot the error for each training case. (c) Save the plot as a vector image (checkTraining.pdf and checkTraining.emf) (d) Show a polar graph of the output to verify that the network has reduced the noise.
Edite el archivo CheckTrain.lab, entonces ejecute el código para verificar el entrenamiento. (a) Calcule el error medio cuadrático para la CNN usando el conjunto de datos de entrenamiento. (b) Cree una gráfica del error para cada caso de entrenamiento. (c) Guarde la gráfica como una imagen vectorial (checkTraining.pdf y checkTraining.emf). (d) Muestre una gráfica polar de la salida para verificar que la red ha reducido el ruido.

ConvRose\CheckTrain.lab
//_______________________________________ 1. Load the training set
Tensor trainSetInput;
trainSetInput.LoadCsv(64, 1, 1);
Tensor trainSetTarget;
trainSetTarget.LoadCsv(64, 1, 1);
//_______________________________________ 2. Load the network
ConvNet net;
net.Load();
//_______________________________________ 3. Run
Tensor output;
net.Run(trainSetInput, output);
double mse = output.ComputeMse(trainSetTarget);
//_______________________________________ 4. Relative error
Vector error;
output.ComputeRelError(trainSetTarget, error);
XyChart checkTraining;
checkTraining.SetCaption("case", false, "Relative Error", false);
checkTraining.AddGraphY(error, "Relative Error", 2, 1, 0, 255, 0);
checkTraining.SetLogScale(false, true);
checkTraining.SetLimits(0, trainSetTarget.GetCount(), 1.0e-10, 1.0);
checkTraining.SetColorMode(2);
checkTraining.SaveAndShow();
checkTraining.SavePDF(0.0);
checkTraining.SaveEMF();
//_______________________________________ 5. Convert to matrix
Matrix out;
output.ToMatrix(out);

mseCheckTrain

CheckTraining

out0

out100

Step E
Edit the Validation.lab file, then execute the code to validate the performance of the network. (a) Compute the mean squared error for the CNN using the validation set. (b) Plot the error for each validation case. (c) Save the plot as a vector image (validation.pdf and validation.emf) (d) Show a polar graph of the output to verify that the network has reduced the noise from the shape.
Edite el archivo CheckTrain.lab, entonces ejecute el código para validar el desempeño de la red neuronal. (a) Calcule el error medio cuadrático para la CNN usando el conjunto de datos de validación. (b) Cree una gráfica del error para cada caso de validación. (c) Guarde la gráfica como una imagen vectorial (validation.pdf y validation.emf) (d) Muestre una gráfica polar de la salida para verificar que la red ha reducido el ruido de la silueta.

ConvRose\Validation.lab
//_______________________________________ 1. Load the validation set
Tensor validSetInput;
validSetInput.LoadCsv(64, 1, 1);
Tensor trainSetTarget;
trainSetTarget.LoadCsv(64, 1, 1);
//_______________________________________ 2. Load the network
ConvNet net;
net.Load();
//_______________________________________ 3. Run
Tensor output;
net.Run(validSetInput, output);
double mse = output.ComputeMse(trainSetTarget);
//_______________________________________ 4. Relative error
Vector error;
output.ComputeRelError(trainSetTarget, error);
XyChart validation;
validation.SetCaption("case", false, "Relative Error", false);
validation.AddGraphY(error, "Relative Error", 2, 1, 0, 255, 0);
validation.SetLogScale(false, true);
validation.SetLimits(0, trainSetTarget.GetCount(), 1.0e-10, 1.0);
validation.SetColorMode(2);
validation.SaveAndShow();
validation.SavePDF(0.0);
validation.SaveEMF();
//_______________________________________ 5. Convert to matrix
Matrix val;
output.ToMatrix(val);

Validation

val0

val100

© Copyright 2000-2021 Wintempla selo. All Rights Reserved. Jul 22 2021. Home